29 research outputs found

    A discipline for program development

    Get PDF
    A constructive method of program development is presented. It is based on a simple strategy for problem decomposition that is claimed to be more supportive of goal-oriented programming than the Wirth-Dijkstra top-down refinement method. The strategy can minimize case analysis, simplify constructive program proofs, and, ensure a correspondence between program structure and data structure

    Program development by inductive step wise refinement

    Get PDF
    A constructive method of program development is presented. It seeks to unify two important ideas about program development. Namely that programming is a goal-oriented activity and that there should be a correspondence between data and program structures. The latter concept is seen to be extensible beyond the data processing context in which it was originally proposed. Induction provides the vehicle for program development by stepwise refinement, with the final program being constructed by application of a sequence of progressively more powerful generalizations. The design process employed guarantees the correctness of the final program provided each of the refinement steps have been correctly taken. The method is illustrated by a number of examples

    A mass spectrum dictionary for fast library searching

    Get PDF
    When data can be arranged according to some ordering principle (e.g. numerical or alphabetical) powerful searching techniques can be applied to retrieve information. An explicit set of procedures is proposed for constructing a precisely ordered mass spectrum dictionary. Performance tests on the proposed system show that on average less than 1% of the spectra need to be examined in searching for a given unknown. The mass spectrum dictionary is economical on storage and it will accommodate spectrum variability likely to be found in a library search environment

    A program structuring principle

    Get PDF
    A principle for program structuring is introduced. The principle follows from adopting the idea that structure in a program is realized by changing or setting particular subsets of a program\u27s variables under certain defined conditions. Individual structural components may then be defined by changing minimum subsets of variables that permit progress. This method of program structuring is Widely applicable. Examples are presented demonstrating how the structuring principle can be applied to advantage in the implementation of several well-known algorithms

    Architecture Normalization for Component-based Systems

    Get PDF
    AbstractBeing able to systematically change the original architecture of a component-based system to a desired target architecture without changing the set of functional requirements of the system is a useful capability. It opens up the possibility of making the architecture of any system conform to a particular form or shape of our choosing. The Behavior Tree notation makes it possible to realize this capability by inserting action-inert bridge component-state. For example, we can convert typical network component architectures into normalized tree-like architectures which have significant advantages. We can also use this “architecture change” capability to keep the architecture of a system stable when changes are made in the functional requirements. The results in this paper build on earlier work for formalizing the process of building a system out of its requirements and formalizing the impact of requirements change on the design of a system

    Optimum scaling of mass spectra for computer matching

    Get PDF
    A scaling procedure that minimizes effects due to mass discrimination and other instrumental distortion in computer-matching of mass spectra is described. It is shown how spectra should only be matched when they have been scaled to be at their minimum distance with respect to the similarity index being used for the measurement

    The structural molecular formula: extending the molecular weight - molecular formula series

    Get PDF
    There is a pressing need for simple, flexible and efficient techniques for substructural searching of large data bases. The structural molecular formula described, represents a logical extension of the molecular weight and molecular formula descriptions of molecular topology. It is shown to come close to structure diagrams in structural resolution and is therefore an idenl tool for screening large data bases

    Exploiting partial order with quicksort

    Get PDF
    The widely known Quicksort algorithm does not attempt to actively take advantage of partial order in sorting data. A relatively simple change can be made to the Quicksort strategy to give a bestcase performance of n. for ordered data. with a smooth transition to O(n log n) for the random data case. An attractive attribute of this new algorithm (Transort) Is that its performance for random data matches that for Sedgewlck\u27s claimed best Implementation of Quicksort

    A discipline for loop construction

    Get PDF
    A discipline for loop construction is presented which is based on the concept of a well-formed postcondition. A well-formed postcondition is seen to have an implicit logical structure which is made explicit by appropriate. variable binding. This variable binding identifies the loop invariant and a determinate. Loops are then constructed by first identifying the weakest iterative mechanism capable of establishing the postcondition. Subsequent development proceeds by way of inducive stepwise refinement. This discipline for loop construction leads naturally to a scheme for classifying loop mechanisms. It also leads to a proposal for a weak loop grammar (not in principle unlike Chomsky\u27s phrase structure grammar) which helps to make explicit semantically important components of a loop structure. The grammar is enhanced by a set of funOamental transformation rules

    Before programming - on teaching introductory computing

    Get PDF
    In comparison with most other human intellectual activities, computing is in Its infancy despite the progress we seem to have made in such a short time. Consequently, there has been insufficient time for the evolution of best ways to transmit computing concepts and skills. It is therefore prudent to look to more mature disciplines for some guidelines on effective ways to introduce computing to beginners. In this respect the discipline of teaching people to read and write In a natural language is highly relevant. A fundamental characteristic of this latter discipline is that a substantial amount of time is devoted to teaching people to read long before they are asked to write stories, essays, etc. In teaching computing we seem to have overlooked or neglected what corresponds to the reading stage in the process of learning to read and write. In the discussion which follows we will look at ways of economically giving students the computer-reading experience and preparing them for the more difficult tasks of algorithm design and computer problem-solving
    corecore